package com.coder.rental.service.impl;

import com.coder.rental.service.IMailService;
import com.coder.rental.vo.MailVo;
import jakarta.annotation.Resource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

@Service
public class MailServiceImpl implements IMailService {
    @Resource
    private JavaMailSender javaMailSender;

    /**
     * 重写发送邮件的方法
     *
     * @param mail 包含邮件信息的MailVo对象，包括发件人、收件人、主题、内容等
     *             该方法负责将邮件信息封装到SimpleMailMessage对象中，并利用JavaMailSender接口提供的方法发送邮件
     *             此处使用了SimpleMailMessage类，适用于发送简单的文本邮件如果需要发送带有附件或HTML内容的邮件，
     *             则需要使用MimeMessage类
     */
    @Override
    public void sendMail(MailVo mail) {
        // 创建SimpleMailMessage实例，用于封装邮件相关信息
        SimpleMailMessage message = new SimpleMailMessage();

        // 设置发件人地址，从MailVo对象中获取
        message.setFrom(mail.getFrom());

        // 设置收件人地址，从MailVo对象中获取
        message.setTo(mail.getTo());

        // 设置邮件主题，从MailVo对象中获取
        message.setSubject(mail.getSubject());

        // 设置邮件内容，从MailVo对象中获取
        message.setText(mail.getContent());

        // 设置抄送地址，此处将发件人地址作为抄送地址，实现邮件的自发送抄送功能
        message.setCc(mail.getFrom());

        // 使用JavaMailSender发送邮件，mailSender是一个事先配置好的邮件发送器
        javaMailSender.send(message);
    }
}
